package com.ys.作业;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 描述: TODO
 *
 * @author CodeYang
 * @version 2020/12/24 9:12
 */
public class 万年历日历类实现 {
    public static void main(String[] args) {
        // 1 获取日期 str -> calender
        System.out.print("输入日期:(yyyy-MM-dd):");
        String dateStr = new Scanner(System.in).nextLine();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = sdf.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        // 2遍历日历
        // 2-1 的得到这个月 的第一天 是星期几 对应打印几个空格
        // 返回 当前天数的 最大值,(日历类自动帮我们做了 平年闰年,拼接天数的判断,得到本月有多少天)
        // 获得当前天数
        int nowDate = calendar.get(Calendar.DATE);
        //  把当前 日期设置为 当月第一天
        calendar.set(Calendar.DATE,1);
        // 获得 当天星期几
        int temp = calendar.get(Calendar.DAY_OF_WEEK);

        System.out.println("日\t一\t二\t三\t四\t五\t六");
        for (int i = 1; i < temp; i++) {
            System.out.print("\t");
        }
        int actualMaximum = calendar.getActualMaximum(Calendar.DATE);


        for (int i =1;i<=actualMaximum; i++) {
            if (i==nowDate){
                System.out.print("*");
            }
            System.out.print(i+"\t");
            temp = calendar.get(Calendar.DAY_OF_WEEK);
            // 星期六换行
            if (temp==7){
                System.out.println();
            }
            //日历变成下一天!!!!!!
            calendar.add(Calendar.DATE,1);

        }



    }
}
